<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script>

    /* 原型设计 的初衷  应该就是  增加构造函数的扩展性  从而增加对象的扩展性
    *  普通对象为什么没有 原型对象?  因为 普通对象的属性就应该是独立的  它没有共享的需要
    *  那么实例对象  又是怎么  找到 它的构造函数的 原型对象 ?   通过每个对象都有的 隐式原型 [[Prototype]] 去找 [[Prototype]] 指向 构造函数的原型对象
    *   谷歌显示 [[Prototype]]  有的浏览器是 __proto__   这个是隐式的 不能 自己调用 底层自动调用 */


    let Person = function (name){
        this.name=name
        this.say = function (){
            console.log(this.name)
        }
    }


    //  p 的构造函数 是 Person     因为他是通过  Person 构造函数 构造的
    let p = new Person('张三')

    console.log(p)

    // 函数对象才有原型
    console.log(Person.prototype)

    // 普通对象没有原型
    console.log(p.prototype)  //undefined


    // 给函数的原型对象添加 共用方法
    Person.prototype.method =  function (){
        console.log('我是扩充的方法')
    }

    //会现在p对象找方法  找不到会去 构造函数找  再找不到  会去构造函数的原型对象找
    p.say()
    p.method()


    console.log(p)




</script>
</body>
</html>